// 接口类型
// interface 接口类型是 TS 中最常见的类型，可以约束任意对象的形状 shape!
interface Point {
  x: number; // 必选属性
  y: number;
  readonly color?: string; // 可选属性并只读
}

let p1: Point = {
    x: 1,
    y: 2,
    color: 'red'
}

p1.x = 3;
// p1.color = 'blue'; 只读属性不能修改

interface Shape {
    rotate(angle: number): void;
}

// 接口可以继承，并可以多重继承
interface Point3D extends Point, Shape {
  z: number;
}

let p3: Point3D = {
    x: 1,
    y: 2,
    z: 3,
    rotate(angle: number) {
        console.log(angle);
    }
}
console.log(p3.x)